package net.pws.oos.biz.query;

import java.util.List;
import java.util.Map;

import net.pws.oos.biz.model.ProspectRecod;
import net.pws.oos.biz.model.Task;
import net.pws.oos.biz.query.parameter.TaskQueryParameter;
import net.pws.oos.biz.query.parameter.TaskStatsByProjectQueryParameter;

@SuppressWarnings("rawtypes")
public interface TaskFinder {

    /**
     * @param taskId
     * @return
     */
    public int countSubTask(String taskId);
    
    
    /**
     * @param taskId
     * @return
     */
    public List<Task> getSubTaskList(String taskId);
    
    /**
     * 
     * @param taskId
     * @return
     */
    public List<Map> getSubTaskListMap(String taskId);

    /**
     * @param taskId
     * @return
     */
    public List<Task> getSubTaskList_(String taskId);
    
    /**
     * 
     * @param executePersonId
     * @param status
     * @return
     */
    public int countTask(String executePersonId, String status);
    
    /**
     * @param queryParameter
     * @return
     */
    public int countTask(TaskQueryParameter queryParameter);
    
    /**
     * @param queryParameter
     * @return
     */
    public int countMyTask(TaskQueryParameter queryParameter);

    /**
     * @param queryParameter
     * @return
     */
    public int countAllTask(TaskQueryParameter queryParameter);
        
    /**
     * @param queryParameter
     * @param start
     * @param limit
     * @return all the task list
     */
    public List<Map> getTaskList(TaskQueryParameter queryParameter,
                                 int start,
                                 int limit);
    
    /**
     * @param queryParameter
     * @param start
     * @param limit
     * @return the task list created by client
     */
	public List<Map> getMyTaskList(TaskQueryParameter queryParameter,
                                   int start,
                                   int limit);

    /**
     * @param queryParameter
     * @param start
     * @param limit
     * @return the task list created by all user
     */
    public List<Map> getAllTaskList(TaskQueryParameter queryParameter,
                                   int start,
                                   int limit);
                
    /**
     * 获取任务,通过MAP方式
     * @param id
     * @return
     */
    public Task getTaskMap(String id);
    
    /**
     * 获取任务,通过fetch
     * @param id
     * @return
     */
    public Task getTask(String id);
        
    /**
     * 查询统计的用户
     * @param queryParameter
     * @return
     */
    public List<Map> getStatsUserList(TaskQueryParameter queryParameter);
    
    /**
     * 查询统计的用户数量
     * @param queryParameter
     * @return
     */
    public int countStatsUser(TaskQueryParameter queryParameter);
    
    /**
     * 查询已完成且有经纬度但未有地址的任务
     * @param id
     * @return
     */
    public List<Task> getNoAddressTaskList(String id);
    
    public int countStats(TaskStatsByProjectQueryParameter queryParameter);
    
    public List<Map> listStats(TaskStatsByProjectQueryParameter queryParameter);
    
    /**
     * 营销版本演示临时需要
     * @param queryParameter
     * @return
     */
    public List<Map> listBySaleDemo(TaskQueryParameter queryParameter);
    
    public int countBySaleDemo(TaskQueryParameter queryParameter);


	public ProspectRecod getProspectMapByTaskId(String taskId);


	public ProspectRecod getProspectMapById(String id);
}
